package org.facyt.vacas.dao.impl;

import javax.persistence.Query;

import org.apache.log4j.Logger;
import org.facyt.vacas.dao.IUsuarioDAO;
import org.facyt.vacas.entities.login.Usuario;
import org.facyt.vacas.util.Constantes;

public class UsuarioDAO extends GenericDAO<Usuario, Integer> implements
		IUsuarioDAO {

	private static final Logger log = Logger.getLogger(UsuarioDAO.class);

	/**
	 * Retorna el usuario por el campo nombre de usuario
	 * 
	 * @param UserName
	 *            Representa el nombre del usuario
	 * @return Representa el usuario a retornar. En caso de que no se encuentre
	 *         el mismo o ocurra un error, este se retorna en null y la
	 *         excepcion se loguea.
	 */
	public Usuario getUserByUserName(String userName) {
		Usuario usuario = null;

		StringBuffer queryStr = new StringBuffer();
		try {
			if (userName != null && !userName.isEmpty()) {

				queryStr.append("FROM Usuario u ");
				queryStr.append("WHERE u.userName = ");
				queryStr.append("'" + userName + "'");

				Query query = getEntityManager().createQuery(
						queryStr.toString());

				usuario = (Usuario) query.getSingleResult();

			}

		} catch (Exception e) {

			log.error(Constantes.LOG_ERROR, e);

			usuario = null;
		}

		return usuario;
	}

}
